home *** CD-ROM | disk | FTP | other *** search
/ Aminet 20 / Aminet 20 (1997)(GTI - Schatztruhe)[!][Aug 1997].iso / Aminet / comm / www / HTP.lha / HTP / source / suballoc.h < prev    next >
C/C++ Source or Header  |  1997-06-21  |  4KB  |  133 lines

  1. /*
  2. //
  3. // suballoc.h
  4. //
  5. // Memory suballocation ... rather than go out to heap for all the memory,
  6. // htp maintains a small cache of recently allocated memory for speedier
  7. // requests
  8. //
  9. // Copyright (c) 1995-96 Jim Nelson.  Permission to distribute
  10. // granted by the author.  No warranties are made on the fitness of this
  11. // source code.
  12. // Amiga version - 1997 - Geert Bevin
  13. //
  14. */
  15.  
  16. #ifndef SUBALLOC_H
  17. #define SUBALLOC_H
  18.  
  19. #include <exec/types.h>
  20.  
  21. /*
  22. // performance counters
  23. */
  24. #if DEBUG
  25. extern uint totalAllocations;
  26. extern uint freePoolHits;
  27. #endif
  28.  
  29. /*
  30. // suballoc has several features that can be controlled via #defines
  31. // most features are turned off for release versions of the software to
  32. // speed up execution
  33. //
  34. // These features are:
  35. //
  36. //      SUBALLOC_WARNING        prints warning to stdout when problems are
  37. //                              detected
  38. //
  39. //      SUBALLOC_CLEARMEM       all memory is cleared with a special bit
  40. //                              pattern (not all zero or all one) when
  41. //                              allocated and freed
  42. //
  43. //      SUBALLOC_DEBLOG         will print all allocs and frees to a debug
  44. //                              log
  45. //
  46. //      SUBALLOC_MINALLOCSIZE   size (in bytes) of minimum allocation ...
  47. //                              helps prevent heap thrashing when lots of
  48. //                              small allocations occur ... if set to 0
  49. //                              then allocation sizes match requested size
  50. //
  51. //      SUBALLOC_FIRSTFIT       if set, suballoc pulls the first properly sized
  52. //                              block out of its free pool, rather than the
  53. //                              one with the best fit ... faster, but may lead
  54. //                              to unnecessary allocs from the system heap
  55. //
  56. //      SUBALLOC_MAXFREEPOOLSIZE if set, suballoc will keep the free pool
  57. //                              size equal to or less than this amount
  58. //                              ... too small a size will lead to excessive
  59. //                              heap allocations, too large could cause the
  60. //                              program to keep vital memory from the operating
  61. //                              system
  62. //
  63. */
  64.  
  65. #define SUBALLOC_MINALLOCSIZE       (64)
  66. #define SUBALLOC_FIRSTFIT           (1)
  67.  
  68. #if DEBUG
  69.  
  70. #define SUBALLOC_WARNING            (1)
  71. #define SUBALLOC_CLEARMEM           (1)
  72. #define SUBALLOC_DEBLOG             (0)
  73.  
  74. #else
  75.  
  76. #define SUBALLOC_WARNING            (0)
  77. #define SUBALLOC_CLEARMEM           (0)
  78. #define SUBALLOC_DEBLOG             (0)
  79.  
  80. #endif
  81.  
  82. #if __MSDOS__
  83.  
  84. #define SUBALLOC_MAXFREEPOOLSIZE    (60 * KBYTE)
  85.  
  86. #else
  87.  
  88. #define SUBALLOC_MAXFREEPOOLSIZE    (512 * KBYTE)
  89.  
  90. #endif
  91.  
  92. /*
  93. // Initialize and terminate functions ... should be called before and
  94. // after using following functions
  95. */
  96. void InitializeMemory(void);
  97. void TerminateMemory(void);
  98.  
  99. /*
  100. // AllocMemory
  101. //
  102. // malloc() look-alike
  103. */
  104. void *_AllocMemory(uint size, const char *file, uint line);
  105. #define AllocMemory(size)       _AllocMemory(size, __FILE__, __LINE__)
  106.  
  107. /*
  108. // FreeMemory
  109. //
  110. // free() look-alike
  111. */
  112. void _FreeMemory(void *ptr, const char *file, uint line);
  113. #define FreeMemory(ptr)         _FreeMemory(ptr, __FILE__, __LINE__);
  114.  
  115. /*
  116. // ResizeMemory
  117. //
  118. // realloc() look-alike
  119. */
  120. void *_ResizeMemory(void *ptr, uint newSize, const char *file, uint line);
  121. #define ResizeMemory(ptr, newSize) \
  122.     _ResizeMemory(ptr, newSize, __FILE__, __LINE__)
  123.  
  124. /*
  125. // MemorySize
  126. //
  127. // Returns available size of buffer
  128. */
  129. uint MemorySize(void *ptr);
  130.  
  131. #endif
  132.  
  133.